package esc1Caso2;

import java.util.ArrayList;
import java.util.Random;

import IA.DistFS.Requests;
import IA.DistFS.Servers;
import comun.EstadoGenerico;

public class Estado extends EstadoGenerico{
	

	//Creadora vacia para copias
	public Estado(){

	}
	
	public Estado(Requests r, Servers s, int numServ){
		super(r,s,numServ);
	}
	
    
    //Calcula la desviacion estandar de los tiempos de los servidores
    public double calcularStDev() {
		int mean = this.getMediaTiempo();
		double var = 0;
		for(int i = 0; i < this.tiemposServidores.size(); i++){
			var += (this.tiemposServidores.get(i) - mean)*(this.tiemposServidores.get(i) - mean);
		}
		return  Math.sqrt(var / this.tiemposServidores.size());
	}
    
	
	//Crea una copia del estado
    public Estado getCopia(){
    	Estado nuevo = new Estado();
    	nuevo.peticiones = this.peticiones;
    	nuevo.servidores = this.servidores;
    	nuevo.numServidores = this.numServidores;
    	nuevo.asignaciones = new ArrayList<Integer>(this.asignaciones);
    	nuevo.aleatorio = new Random();
    	nuevo.tiemposServidores = new ArrayList<Integer>(this.tiemposServidores);
    	nuevo.tiempoTotal = this.tiempoTotal;
    	
    	return nuevo;
    }
	
}
